package cn.tangsihai.hrm.util;

import cn.tangsihai.hrm.constant.Constants;
import cn.tangsihai.hrm.exceptions.GlobalException;
import org.springframework.util.StringUtils;

/**
 * 断言判断工具类
 */
public class AssertUtil {

    /**
     * 断言对象为空
     * @param object ：断言的对象
     * @param message ：错误信息
     */
    public static void isNull(Object object, String message) {
        if (object != null) {
            throw new GlobalException(message);
        }
    }

    /**
     * 断言对象不为空
     * @param object ：断言的对象
     * @param message ：错误信息
     */
    public static void isNotNull(Object object, String message) {
        if (object == null) {
            throw new GlobalException(message);
        }
    }

    /**
     * 断言字符串不为空
     * @param str ：断言的对象
     * @param message ：错误信息
     */
    public static void isNotEmpty(String str, String message) {
        if (!StringUtils.hasLength(str)) {
            throw new GlobalException(message);
        }
    }
    /**
     * 断言字符串为空
     * @param str ：断言的对象
     * @param message ：错误信息
     */
    public static void isEmpty(String str, String message) {
        if (StringUtils.hasLength(str)) {
            throw new GlobalException(message);
        }
    }

    /**
     * 断言课程下线
     * @param status
     * @param message
     */
    public static void isOffline(Integer status, String message) {
        if (status == Constants.Course.COURSE_STATUS_ONLINE){
            throw new GlobalException(message);
        }
    }

    /**
     * 断言课程上线
     * @param status
     * @param message
     */
    public static void isOnline(Integer status, String message) {
        if (status == Constants.Course.COURSE_STATUS_OFFLINE){
            throw new GlobalException(message);
        }
    }

    /**
     * 断言两个String类型的值是相等，不区分大小写
     * @param str1
     * @param str2
     * @param message
     */
    public static void isEqualsIgnoreCase(String str1, String str2, String message) {
        isNotEmpty(str1, "参数为空");
        isNotEmpty(str2, "参数为空");
        if (!str1.equalsIgnoreCase(str2)){
            throw new GlobalException(message);
        }
    }

    /**
     * 断言两个String类型的值是相等，区分大小写
     * @param str1
     * @param str2
     * @param message
     */
    public static void isEquals(String str1, String str2, String message) {
        isNotEmpty(str1, "参数为空");
        isNotEmpty(str2, "参数为空");
        if (!str1.equals(str2)){
            throw new GlobalException(message);
        }
    }

    /**
     * 断言结果为false
     * @param b
     * @param message
     */
    public static void isFalse(boolean b, String message) {
        if (b){
            throw new GlobalException(message);
        }
    }

    /**
     * 断言结果为true
     * @param b
     * @param message
     */
    public static void isTrue(boolean b, String message) {
        if (!b){
            throw new GlobalException(message);
        }
    }
}
